A number of video processing operations call for motion compensation for improving the quality of the processing, for example in the case of a video interpolation, or for reducing data volumes, for instance in the case of a video compression. This invention relates more specifically to interpolation with motion compensation, also called motion compensated video interpolation.
A motion compensated video interpolation generally consists of a motion estimation step followed by an interpolation step.
The motion estimation consists in defining a motion vector for each of the points of the image to interpolate, the image being temporally positioned between two source images. Usually, the motion estimation step is carried out in 2 steps: a prediction step and a correction step. The prediction step consists in defining, for each one of the pixels of the image to interpolate, a motion vector from the motion vectors that have already been calculated for neighbouring pixels and from the projection of a motion vector calculated for the previous source image and including the considered pixel. The motion vectors already calculated are for example those of the n neighbouring pixels of the previous line of pixels. Prediction then consists in selecting, among the n+1 pre-calculated motion vectors, the motion vector generating the smallest DFD (Displacement Frame Difference) value. The correction step subsequently consists in rotating the selected motion vector around its axis in order to furthermore reduce, if possible, the DFD of the considered pixel.
The interpolation step, which follows the estimation step, is a bilinear interpolation in the majority of the cases. In the case of an image to interpolate Iint between a previous source image Iprev and a current source image Icurr, the previously defined motion vector points to an image point of each one of the source images, this image point being either a pixel, or a point located between 4 pixels. In the case of an interpolation known as “single frame”, bilinear interpolation then consists in assigning to the considered P of the image Iint a value which is a bilinear function f of the values of the 4 pixels pointed to in one of the source images (generally, the current source image) by the estimated motion vector. For example, if V1, V2, V3 and V4 designate the values of the 4 pixels near the image point pointed to by the motion vector in the current source image and if α1, α2, α3 and α4 are weighting factors representative of the proximity of said pixels to the image point, the value assigned to the pixel of the image Iint is
      (                  ∑                  i          =          1                4            ⁢                        α          i                ·                  V          i                      )    /            ∑              i        =        1            4        ⁢                  α        i            .      If the motion vector points to a specific pixel among the 4 pixels, the weighting factor assigned to the other 3 pixels is nil and the value assigned to the considered pixel is the value of this specific pixel. In the case of an interpolation known as “double frame”, the bilinear interpolation is done in the same manner but with 8 pixels, i.e. 4 pixels of the previous source image and 4 pixels of the current source image.
Given that motion estimation is never without errors, this type of compensated interpolation in movement contains visible defects in the image areas that disappear or appear between two successive source images since matching between pixels is not possible then.